package com.cy.pj.sys.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
/**
 * 操作菜单表数据的一个数据层对象
 * @author Administrator
 *
 */
import org.apache.ibatis.annotations.Select;

import com.cy.pj.common.pojo.Node;
import com.cy.pj.sys.pojo.SysMenu;
@Mapper
public interface SysMenuDao {
	/**
	 * 查询表中所有菜单信息，一行记录映射为内存中的一个Map对象
	 * map中的key为表中字段名，值为表中字段对应的值
	 * FAQ:
	 * 1.在内存中使用map对象封装从数据库查询到的数据有什么优势，劣势？
	 * a):优势，灵活，开发速度快
	 * b):劣势：可读性比较差（打开源码不知道存了什么）值的类型不可控
	 * c)：应用：实际项目中外包项目经常会用map封装数据，公司产品级项目
	 * 应用（要求比较高）能用pojo则用pojo
	 *     
	 * 2.为什么一行记录映射为一个map对象呢？(key值相同值会覆盖)
	 * @return
	 */
	List<Map<String, Object>> findObjects();
	//基于id查统计子元素的个数
	int getChildCount(Integer id);
	//基于id删除菜单元素
	int deleteObject(Integer id);
	@Select("select id,name,parentId from sys_menus")
	List<Node> findZtreeMenuNodes();
	
	int insertObject(SysMenu entity);

}
